package br.com.salao.rest;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.log4j.Logger;

import br.com.salao.bean.Agendamento;
import br.com.salao.bean.Login;
import br.com.salao.model.AgendamentoModel;
import br.com.salao.model.LoginModel;

@Path("/agendamento")
public class AgendamentoService {
	
	Logger logger = Logger.getLogger(AgendamentoService.class.getName());

	@GET
	@Path("/{idEstabelecimento}/{data}")	
	@Produces({MediaType.APPLICATION_JSON})
	public List<Agendamento> buscarAgendamentos(@PathParam("idEstabelecimento")int idEstabelecimento, @PathParam("data")long dataLong){

		Date data = new Date(dataLong);
		AgendamentoModel model = new AgendamentoModel();
		return model.buscarAgendamentos(idEstabelecimento, data);
	}

	public Agendamento inserir(Agendamento agendamento){
		AgendamentoModel model = new AgendamentoModel();
		return model.inserir(agendamento);
	}

	@GET
	@Path("/usuario/{idLogin}")	
	@Produces({MediaType.APPLICATION_JSON})
	public List<Agendamento> buscarAgendamentosPorIdUsuario(@PathParam("idLogin") int idLogin){
		
		
		LoginModel loginModel = new LoginModel();
		Login login =  loginModel.buscar(idLogin);
		
		AgendamentoModel model = new AgendamentoModel();
		return model.buscarAgendamentosPorIdUsuario(login.getUsuario().getId());
	}
	

	@GET
	@Path("/salvar/{idLogin}/{idFuncionarioServico}/{idEstabelecimento}/{dataIni}/{horario}")	
	@Produces({MediaType.APPLICATION_JSON})
	public Map salvar(@PathParam("idLogin")int idLogin, 
			@PathParam("idFuncionarioServico")int idFuncionarioServico, 
			@PathParam("idEstabelecimento")int idEstabelecimento, 
			@PathParam("dataIni")String data, 
			@PathParam("horario")String horario) throws ParseException{
		
		logger.debug(idLogin + "|" + idFuncionarioServico + "|" + idEstabelecimento + "|" + data + "|" + horario);

		String[] horarios = horario.split("-");
		String horario_inicial = horarios[0];
		String horario_final = horarios[1];

		String dataHorarioInicial = data + " " + horario_inicial;
		String dataHorarioFinal = data + " " + horario_final;

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		Date dataIni = sdf.parse(dataHorarioInicial);
		Date termino =sdf.parse(dataHorarioFinal);	
		
		LoginModel loginModel = new LoginModel();
		Login login= loginModel.buscar(idLogin);

		Agendamento agendamento = new Agendamento();
		agendamento.setUsuarioSolicitante(login.getUsuario());
		agendamento.getFuncionarioServicos().setId(idFuncionarioServico);
		agendamento.getEstabelecimento().setId(idEstabelecimento);
		agendamento.setData(dataIni);
		agendamento.setStatus("PENDENTE");
		agendamento.setTermino(termino);
		agendamento.setCreated(new Date());

		Map<String, Boolean> hash= new HashMap<String, Boolean>();
		
		try{
			AgendamentoModel model = new AgendamentoModel();
			model.inserir(agendamento);
			hash.put("result", true);
		}catch (Exception e) {
			hash.put("result", false);
		}
		
		return hash;
	}

}
